package com.example.redis.autoregister.config;

import java.lang.annotation.*;

// 该注解用于字段或类型之上
@Target({ElementType.FIELD, ElementType.TYPE})
// 该注解应用于运行时
@Retention(RetentionPolicy.RUNTIME)
public @interface RedisTemplateConfig {
    // key 序列化工厂配置
    RedisSerializerBuilderConfig keySerializer();
    // value 序列化工厂配置
    RedisSerializerBuilderConfig valueSerializer();

    // 是否使用 hash 类型，如果启用 hash 类型，需要配置 hashKeySerializer 和 hashValueSerializer
    boolean hashType() default false;

    // hash key 序列化工厂配置
    RedisSerializerBuilderConfig hashKeySerializer() default @RedisSerializerBuilderConfig(builder = Void.class);
    // hash value 序列化工厂配置
    RedisSerializerBuilderConfig hashValueSerializer() default @RedisSerializerBuilderConfig(builder = Void.class);;
}
